物联网—IOT你真的懂吗?
点击上方“果果小师弟”,选择“置顶/星标公众号”
干货福利,第一时间送达!
我们这个项目就是ESP8266连接家中的路由器的网,手机连接的是4/5G网,这样你就可以在你家中的设备不断电不断网的情况下,在任意地方来控制你家中的用电器设备。
那么连上服务器以后是不是能直接控制了?当然可以,刚学单片机的小伙伴肯定玩过串口做串口实验,从单片机发送字母xiaoshidi,串口调试助手就收到字母xiaoshidi,觉得很有趣。但是有时候你会发现如果你的串口通信的函数写的不好或者有误的时候就会出现通信错误,比如接收的数据是乱码等,那么它的可靠性就不是很好!
那什么叫可靠性不好呢?比如这边发过去的时候是xiaoshidi,运气不好的话那边只可能收到的是shidi,这样的话就会出事。所以我们也不能直接向云服务器发送个简单指令去控制下位机,需要有一定的约定,比如事先告诉服务器我要发送9个字母过来了,云服务器收到后就知道了,如果接收xiaoshidi一般来说是正确接收了,如果只收到shidi说明丢了4个字母,这就是我们常说的丢包。那么这样的约定就是我们常说的协议!有句话叫做“没有物联网协议就没有智能安全”,其实关键就是协议,在物联网中常用的就是MQTT协议,那么为什么不用我们常见的http协议呢?只能自己百度了。这边简单的介绍下什么MQTT协议的原理,因为只要会MQTT就能玩转物联网,先看个例子。
比如我在微博里关注了“晓艳考研”,那么当“晓艳考研”发了一条微博后我就能收到。为什么能收到呢?是因为我关注它了。我想这些玩微博的小伙伴都知道,我再用图表示下。
好了,到这边其实已经把MQTT协议的原理讲清楚了。晓艳考研相当于手机,我相当于单片机(控制器),如下图。
在我们MQTT协议中也一样,只要单片机1、单片机2、单片机3等等都订阅了手机这个主题,那么只要手机发指令,就能控制各个单片机,那么也就是能控制家里的各个电器。有的小伙伴脑子转的溜,感觉这样控制是有问题的,因为这样的话手机是统一控制了家里的电器,总不能都一起开一起关吧。
在微博有个功能叫做@,虽然我、小雅、小李都关注了“晓艳考研”,但是“晓艳考研”在发布消息的时候还能@我,那么在我们MQTT协议中也是一样,也能@某个控制器,这样的话就能单独控制某个功能了。关于MQTT理论先说到这,其实还有很多玩法,比如在微博里“晓艳考研”也关注了我呢?这个有什么用?这样可以用控制器采集信息上传到我们的手机了!那就可以采集家中的环境数据上发到你的手机。
二、实现部分
根据下面这张图,我们要做三部分,单片机、云服务器、手机。
1、单片机
一般把单片机也叫作控制器或者下位机。我相信看我公众号的小伙伴已经不陌生单片机了!我们这里用的是STM32单片机,那你说你为啥不用51单片机、arduino?因为现在用STM32的人太多了,arduino又体现不出你是一个电子信息专业的,51就不用说了。那又有人说你为啥不用esp32本来就可以当一块单片机搞个STM32岂不是太麻烦?
最后我们的mqtt协议转换成C语言代码已经有前辈写好了,我们的目的就是学会它,学会反向学习才能增加你对新事物的学习兴趣。MQTT协议是现成的拿来用即可!在理论部分提到的MQTT协议是整个物联网的核心,所以单片机、手机和云服务器都要有这协议。就好像三个中国人在聊天,一个日本人过来听他根本听不懂,因为他没有中文这个能力。所以控制器也要有这个解析协议的能力。
2、服务器
服务器可以理解成一台普通的电脑,只是它的性能比较稳定不容易死机。目前服务器有很多,做的比较大像腾讯云、阿里云等等,购买服务器也是个坑需谨慎!前期的话大家学习不用买,登录生活物联平台用现成的,后面会说到。
3、手机
一般把手机也叫上位机,上位机还有电脑、平板等等,实验中是用手机发送命令来控制我们的单片机。那么手机能打开直接能操作吗,显然不能,需要编写相应的程序界面。如果你是安卓手机的话可以用android studio软件编写相应的app程序。当然前期的话大家不要去想着做一个app,难度还是有的。大家抽空多去B站看看相关视频学一下,这个后面再说。
END
如果觉得文章对你有帮助,欢迎转发、点赞、分享给你的朋友,感谢您的支持!